Twilio Gatherを使用して、Twilio番号に着信する音声通話を録音し、テキストに転写します
2024.03.13
こんにちは、チャールです。このブログでTwilio Gatherを使用して、Twilio番号に着信する音声通話を録音し、テキストに転写します。
前提条件:
紹介:
最初に、Twilioアカウントを作成して番号を取得してください。
お気に入りのコードエディタを使ってください。
Pythonをインストールした後、pipを使用してFlaskとTwilioのPython SDKをインストールしてください。
pip install Flask twilio
ngrokのウェブサイトからngrokをダウンロードしてください。
やりましょう!
ディレクトリを作成し、必要なパッケージをインストールして、以下のコードを書いてください。
from flask import Flask from requests.api import request from twilio.twiml.voice_response import Gather,VoiceResponse app = Flask(__name__) @app.route("/voice", methods=['GET', 'POST']) def voice(): response = VoiceResponse() gather = Gather( action='/results', method='GET', language='ja-JP', input='speech', speech_model='phone_call', speech_timeout='5', enhanced='true') gather.say("メセージを残してください!", voice='Polly.Mizuki') response.append(gather) print(response) return(str(response)) @app.route("/results",methods=['GET']) def results(): response = VoiceResponse() response.say("ありがとうございます", voice='Polly.Mizuki') print(request) return(str(response)) if __name__ == "__main__": app.run(debug=True)
コードを理解しましょう。
- /voice ルートは、着信を処理するために定義されます。Twilioがあなたの番号に電話を受けると、このエンドポイントにリクエストを送り、その後 voice() 関数が実行されます。
- VoiceResponseオブジェクトが作成されます。このオブジェクトは、メッセージを再生するか入力を収集するかなど、Twilioが通話で何をするかを指示します。
- Gatherオブジェクトが使います。Gatherはいくつかのパラメータで設定されます:
- action='/results' は、収集した入力をTwilioがどこに送るかを指示します。入力を収集した後、Twilioは/resultsエンドポイントへリクエストを行います。
- method='GET' は、アクションURLへのリクエストを行う際のTwilioのHTTPメソッドを指定します。
- language='ja-JP' は、音声認識の言語を日本語に設定します。
- input='speech' は、IVRがDTMFトーン(キーパッド入力)ではなく音声入力を聞くように指示します。
- speech_model='phone_call' は、通話音声の音声認識を最適化します。
- speech_timeout='5' は、Twilioが音声入力を処理する前の最大無音時間を設定します。
- enhanced='true' は、より高い精度のために強化された音声認識を有効にします。
- Gatherは、.say() メソッドを使用して、発信者にメッセージを日本語で残すように促します。これは、テキストから音声への変換にAmazon PollyのMizuki声を使用します。
- Gatherを設定した後、それをVoiceResponseに追加します。レスポンスは文字列に変換され(str(response))、返されます。これをTwilioは通話の対話をガイドするために使用します。
/voiceルート
- 発信者が応答した後、TwilioはGatherアクションによって指定された/resultsエンドポイントに入力を送ります。results() 関数は次にこの入力を処理します:
- 新しいVoiceResponseオブジェクトが作成され、発信者に対するレスポンスを生成します。
- .say() メソッドが再び使用され、日本語で発信者に感謝します。
/results ルート
コードを実行する
python3
を実行してください。これにより、フラスクサーバーが実行されます。ngrok http 5000
を実行してください。これにより、公開URLが生成されます。まとめ:
Python Flaskを使用してTwilio Voice Callのセットアップに成功しました。このセットアップでは、ユーザーがボタンを押さずに5秒間沈黙している場合、自動的に通話が拒否されます。異なるGatherコンポーネントも試してください。
ありがとうございます!